package com.projectplace.GUI.Database;

/*
 * Copyright (c) 2011 Projectplace International AB
 * Permission is hereby granted, free of charge, to any person 
 * obtaining a copy of this software and associated documentation 
 * files (the "Software"), to deal in the Software without restriction, 
 * including without limitation the rights to use, copy, modify, merge, 
 * publish, distribute, sublicense, and/or sell copies of the Software, 
 * and to permit persons to whom the Software is furnished to do so, 
 * subject to the following conditions:The above copyright notice and this 
 * permission notice shall be included in all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.content.Context;
import android.util.Log;
import com.projectplace.GUI.Callback.InternalCacheCallback;

public class LoadFromCache extends Thread {

	private FileInputStream fis;
	private Context context;
	private final static String LOG_TAG = "LoadFromCache";
	private InternalCacheCallback callback;
	private static String fileName;
	private StringBuffer str;
	
	public LoadFromCache(Context context,String fileName,InternalCacheCallback internalCacheCallback){
		this.context = context;
		this.callback = internalCacheCallback;
		LoadFromCache.fileName = fileName;
		str = new StringBuffer();
	}
	
	public void run(){
		int ch;
		try {
			Log.d(LOG_TAG +" Loading file:", fileName);
			fis = context.openFileInput(fileName);
			while((ch = fis.read()) != -1){
				str.append((char)ch);
			}
			fis.close();
			if(str.length() > 0){
				Log.d(LOG_TAG, Character.toString(str.charAt(str.length()-1)));
				if(str.toString() != null && (str.charAt(str.length()-1) =='}' || str.charAt(str.length()-1) ==']') ){
					callback.onSuccess(str.toString());

				}
				else
					callback.onFail(new Error("Nothing read"));
			}else
				callback.onFail(new Error("Nothing read"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			callback.onFail(new Error("FileNotFoundException"));
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			callback.onFail(new Error("IOException"));
			e.printStackTrace();
		}
	}
}
